# Бандл метамодели (Metamodel Bundle)

Бандл метамодели - самодостаточная, отчуждаемая часть кода архитектуры. Он может содержать все то же, что обычный код.
Целью его создания является - переиспользование архитектурного кода в сторонних архитектурных кодовых базах
в качестве зависимости.

Например, можно создать бандл описывающий вашу корпоративную архитектурную нотацию и передать командам как 
общий стандарт описания архитектуры. Пример создания нотации C4 Model можно посмотреть 
[здесь](https://github.com/rpiontik/DocHubExamples/tree/main/src/C4Model).

Рекомендуется следующая файловая структура бандла:
```
.\C4Model\              - Идентификатор бандла
.\C4Model\Entities\     - Сущности, которые содержит в себе бандл
.\C4Model\Validators\   - Валидаторы
.\C4Model\Datasets\     - Источники данных
.\C4Model\Docs\         - Документы
.\C4Model\dochub.yaml   - Корневой манифест
.\C4Model\README.md     - Описание бандла
```

# Управление пакетами

Пакеты позволяеют парсить содержимое только в том случае если решены его зависимости.
Иначе парсинг манифеста будет отложен до момента разрешения его зависимостей с необходимыми версиями.
Пакет считается установленным когда все его зависимости разрешены и манифест распарсен.

Создание нового пакета:
- Создайте новый файл с расширением ".yaml".
- В файле определите информацию о пакете, используя следующий формат:

```
 $package:
   <идентификатор_пакета>:
       version: <версия_пакета>
       dependencies:
         <зависимость_1>: "<версия_1>"
         <зависимость_2>: "<версия_2>"
```     
Здесь <идентификатор_пакета> - уникальный идентификатор пакета, <версия_пакета> - версия пакета, <зависимость> - зависимость пакета, <версия> - версия зависимости.

В остальном структура пакета не отличается от описания манифеста


